<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			// 新建一个函数,没有返回值
			function Person(){
				// return 0; //如果在这里加了返回值，per = 0
			}
			
			var per =  Person();//per没有返回值，是undefined
			// console.log("当做普通函数调用Person（）" + per);
			var perr = new Person();//同样没有返回值，但perr从undefined变成了object
			// console.log("用new关键字声明Person()是构造函数：" + perr);
			
			/**
			 * 构造函数的执行流程
			 * 1. 立刻创建一个新的对象
			 * 2. 将新建的对象设置为函数中的this,在构造函数中可以使用this来引用新建的对象
			 * 3. 逐行执行函数中的代码
			 * 4. 将新建对象作为返回值返回
			 * */
			 function Person2(){
				 // alert("这是一个函数");
				 // console.log(this);
				 this.name = "双双";
				 this.age = 566;
				 this.balance = 100000;
				 this.sayName = function(){
					 // console.log(this.name);
				 }
			 }
			 var per2 = new Person2();
			 console.log(per2);
			 var per3 = new Person2();
			 console.log(per3);
			 var per4 = new Person2();
			 console.log(per4);
			 
			 function Cat(){
				 this.name = "喵喵喵";
				 this.color = "white";
			 }
			 var cat1 = new Cat();
			 console.log(cat1);
			 var cat2 = new Cat();
			 console.log(cat2);
			 
		</script>
	</body>
</html>
